home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / VMETAFIL.MOD < prev    next >
Encoding:
Modula Implementation  |  1992-05-28  |  1.9 KB  |  84 lines

  1. IMPLEMENTATION MODULE VMetafile;
  2.  
  3. (*
  4. VDI Metafile Functions.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM VDI    IMPORT contrl,intin,ptsin,v,CallVDIEsc,XY,Integer,EOS,
  12.                    MaxInput,Point;
  13. FROM PORTAB IMPORT UNSIGNEDWORD;
  14. FROM SYSTEM IMPORT ADR;
  15. CAST_IMPORT
  16.  
  17. PROCEDURE VMetaExtents(Handle: UNSIGNEDWORD;
  18.                        MinX  : XY;
  19.                        MinY  : XY;
  20.                        MaxX  : XY;
  21.                        MaxY  : XY);
  22. BEGIN
  23.   ptsin[0]:= MinX;
  24.   ptsin[1]:= MinY;
  25.   ptsin[2]:= MaxX;
  26.   ptsin[3]:= MaxY;
  27.   CallVDIEsc(98,2,0,Handle);
  28. END VMetaExtents;
  29.  
  30. PROCEDURE VWriteMeta(    Handle  : UNSIGNEDWORD;
  31.                          NumIntIn: UNSIGNEDWORD;
  32.                      VAR MyIntIn : ARRAY OF Integer;
  33.                          NumPtsIn: UNSIGNEDWORD;
  34.                      VAR MyPtsIn : ARRAY OF Point);
  35. BEGIN
  36.   WITH v DO
  37.     iioff:= ADR(MyIntIn);
  38.     pioff:= ADR(MyPtsIn);
  39.     CallVDIEsc(99,NumPtsIn,NumIntIn,Handle);
  40.     iioff:= ADR(intin);
  41.     pioff:= ADR(ptsin);
  42.   END;
  43. END VWriteMeta;
  44.  
  45. PROCEDURE VMPageSize(Handle  : UNSIGNEDWORD;
  46.                      PgWidth : UNSIGNEDWORD;
  47.                      PgHeight: UNSIGNEDWORD);
  48. BEGIN
  49.   intin[0]:= 0;
  50.   intin[1]:= PgWidth;
  51.   intin[2]:= PgHeight;
  52.   CallVDIEsc(99,0,3,Handle);
  53. END VMPageSize;
  54.  
  55. PROCEDURE VMCoords(Handle: UNSIGNEDWORD;
  56.                    X1    : XY;
  57.                    Y1    : XY;
  58.                    X2    : XY;
  59.                    Y2    : XY);
  60. BEGIN
  61.   intin[0]:= 1;
  62.   intin[1]:= X1;
  63.   intin[2]:= Y1;
  64.   intin[3]:= X2;
  65.   intin[4]:= Y2;
  66.   CallVDIEsc(99,0,5,Handle);
  67. END VMCoords;
  68.  
  69. PROCEDURE VMFileName(    Handle: UNSIGNEDWORD;
  70.                      VAR Name  : ARRAY OF CHAR);
  71.  
  72. VAR i: [0..MaxInput];
  73.  
  74. BEGIN
  75.   i:= 0;
  76.   WHILE Name[i] # EOS DO
  77.     intin[i]:= ORD(Name[i]);
  78.     INC(i);
  79.   END;
  80.   CallVDIEsc(100,0,i,Handle); (* (i + 1) - 1 = i *)
  81. END VMFileName;
  82.  
  83. END VMetafile.
  84.